<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <script>

        // 同步任务

        // 异步任务
        //     微任务   then
        //     宏任务   延时器和定时器，ajax



        // 同步执行完毕
        // 微任务会插队   --- 紧急任务



        // 事件轮询  event loop
        // 1 遇到同步则立即执行，遇到异步就存在任务队列中(区分微任务和宏任务)
        // 2 同步执行完毕，主线程清空
        // 3 检查微任务队列，如果有要执行的就在主线程上执行
        // 4 检查宏任务队列  如果有要执行的就在主线程上执行 


        setTimeout(() => {
            console.log(1);
            console.log(2);
        }, 200)

        setTimeout(() => {
            console.log(3);
            setTimeout(() => {
                Promise.resolve(5).then(data => {
                    console.log(data);
                })
                console.log(7);
            } , 105)
        },0)

     
        const p2 = Promise.resolve(4) ;
        p2.then(data => {
            console.log(data);
        })

        const p = new Promise((resolve, reject) => {
            setTimeout(() => {
                resolve(6)
            } , 100)

        })

        
        p.then(data => {
            console.log(data);
        })


        // 4  3  7   5  6   1  2

        // 4 3  6  7 5 1 2



    </script>
    
</body>
</html>